package com.sywb.chuangyebao.library.player;

import android.app.Activity;

public interface IVideoController {

    public static final int MODE_VIDEO = 0;
    public static final int MODE_LIVE = 1;

    /**
     * 初始化播放器
     *
     * @param mode 播放器模式 0:点播 1:直播
     */
    void init(int mode);

    /**
     * 初始化播放器
     *
     * @param mode        播放器模式 0:点播 1:直播
     * @param playUrl     播放地址
     * @param previewPath 预览图地址
     * @param duration    视频时长
     */
    void init(Activity mActivity, int mode, String playUrl, String previewPath, String duration);

    /**
     * 开始播放
     */
    void start();

    /**
     * 开始播放
     *
     * @param playUrl     播放地址
     * @param previewPath 预览图地址
     * @param duration    视频时长
     */
    void start(Activity mActivity, String playUrl, String previewPath, String duration);

    /**
     * 暂停播放
     */

    void pause();

    /**
     * 自动暂停
     * ps：主页用于系统界面关闭时触发
     */
    void autoPause();

    /**
     * 恢复播放
     */
    void resume();

    /**
     * 自动恢复播放
     * ps：主要用于系统界面关闭再打开触发
     */
    void autoResume();

    /**
     * 停止播放，需要重新设置播放地址才能开始播放
     */
    void stop();

    /**
     * 销毁播放器
     */
    void destroy();

    /**
     * 设置视频开始播放位置
     */
    void seekTo(int ms);

    /**
     * 设置是否可以重播
     */
    void setCanReplay(boolean isCanReplay);

    /**
     * 播放器播放错误
     *
     * @param causeCode 错误原因码
     * @param sceneCode 错误场景码
     * @param message   错误消息内容
     */
    void error(int causeCode, int sceneCode, String message);

    /**
     * 显示工具栏
     */
    void showToolsView();

    /**
     * 显示工具栏并指定显示时长
     */
    void showToolsView(int time);

    /**
     * 隐藏工具栏
     */
    void hideToolsView();

    /**
     * 更新进度条
     *
     * @param curPosition    播放进度, 单位是秒
     * @param bufferPosition 加载进度, 单位是秒
     * @param duration       视频总长, 单位是秒
     */
    void updateProgress(int curPosition, int bufferPosition, int duration);

    /**
     * 改变屏幕方向
     */
    void changedConfiguration();

    /**
     * 检查播放器状态
     */
    boolean inspectPlayer();

    /**
     * 是否可以播放
     */
    boolean isCanPlayer();

}

